/**
 * 扩展 easyui 的 combobox 控件
 */

(function($){

    $.extend($.fn.combobox.defaults,{

    });

    // TODO:注册新控件的代码还有待优化
    /* 注册 genderbox 控件 */
    $.parser.plugins.push("genderbox");
    $.fn.genderbox=function(options){
        var data=[{value:1,text:"男"},{value:2,text:"女"}];
        comboboxPlugin(options,this,data);
    }

    /* 注册 enablebox 控件 */
    $.parser.plugins.push("enablebox");
    $.fn.enablebox=function(options){
        var data=[{value:0,text:"禁用"},{value:1,text:"启用",selected:true}];
        comboboxPlugin(options,this,data);
    }

    /* 注册 dictionarybox 控件 */
    $.parser.plugins.push("dictionarybox");
    $.fn.dictionarybox=function(options,param){
        // 当options为字符串时，说明执行的是该插件的方法
        if (typeof options == "string") {
            return $.fn.combobox.apply(this,arguments);
        }
        //当该组件在一个页面出现多次时，this是一个集合，故需要通过each遍历
        return this.each(function(){
            var jq=$(this);
            var opts = $.fn.combobox.parseOptions(this);
            var type=opts.type;
            var newopts= $.extend(true,{
                editable:false,
                url:"/demo/easyui/selectCombobox",
                onBeforeLoad:function(param){
                    param.type=type;
                    $.loading("正在加载 dictionarybox 数据");
                },
                onLoadSuccess:function(){
                     $.loaded();
                },
                onLoadError:function(){
                     $.loaded();
                }
            },opts);
            $.fn.combobox.call(jq,newopts);
        });
    }

    function comboboxPlugin(options,ths,data){
        // 当options为字符串时，说明执行的是该插件的方法
        if (typeof options == "string") {
            return $.fn.combobox.apply(this,arguments);
        }
        //当该组件在一个页面出现多次时，this是一个集合，故需要通过each遍历
        return ths.each(function(){
            var jq=$(this);
            var opts = $.fn.combobox.parseOptions(this);
            var newopts= $.extend(true,{
                editable:false,
                panelHeight:"auto",
                data:data
            },opts);
            $.fn.combobox.call(jq,newopts);
        });
    }

})(jQuery);